package Map;

import java.util.*;

public class Test {
    public static void main(String[] args) {
        Set<String> set = new TreeSet<>();
        set.add("hello");
        set.add("abc");
        set.add("poll");

        //遍历set集合
        for(String x : set){
            System.out.println(x);
        }
    }

    public static void main1(String[] args) {
        Map<String,Integer> map = new TreeMap<>();
        map.put("abc",4);
        map.put("hello",3);
        map.put("poll",6);

        //set方法-根据key值获取value
        //int val = map.get("abc");    //如果没有的话会返回空指针异常,因为它是lang类型所以我们可以将Lang类型转换为Integer类型
        //将上面写法转换为拆包写法:
        Integer val = map.get("abc");
        System.out.println(val);

        //getOrDefault-返回key对应的value,key不存在则返回默认值
        Integer myval2 = map.getOrDefault("abcd",100);
        System.out.println(myval2);

        //Set<key的数据类型> keySet() -> 将所有的key取出放到set这个类型的数据集合里面
        Set<String> myset = map.keySet();
        System.out.println("keyset: " + myset);

        //Collection<V> values()     -> 将所有的values取出放到collection这个类型的数据集合里面
        Collection<Integer> myset2 = map.values();
        System.out.println("valueset" + myset2);

        //*** Map.Entry:表示 key - value 组成的整体
        //Set<Map.Entry<key的类型,value的类型>> entrySet()返回所有含key-value关系的整体
        Set<Map.Entry<String,Integer>> set3 = map.entrySet();
        //打印这个集合不能直接print, 我们可以通过for - each 来循环打印
        for(Map.Entry<String, Integer> entry : set3) {
            System.out.println("key: "+ entry.getKey() + " val: " + entry.getValue());
        }
    }
}
